package com.mlethe.library.multi.api.listener;

import androidx.annotation.NonNull;

import com.mlethe.library.multi.api.MultiMedia;

import java.util.Map;

/**
 * 支付回调
 *
 * @author Mlethe
 */
public interface OnActionListener {
    /**
     * 完成（主线程）
     *
     * @param media 类型
     * @param map   数据
     *              微信授权登录：
     *              accessToken     accessToken
     *              refreshToken    refreshToken
     *              expiration      过期时间（毫秒）
     *              openid          普通用户的标识，对当前开发者账号唯一
     *              unionid         用户统一标识。针对一个微信开放平台账号下的应用，同一用户的 unionid 是唯一的。
     *              nickname        普通用户昵称（setUserInfo(false)时，无值）
     *              sex             普通用户性别，1 为男性，2 为女性（setUserInfo(false)时，无值）
     *              province        普通用户个人资料填写的省份（setUserInfo(false)时，无值）
     *              city            普通用户个人资料填写的城市（setUserInfo(false)时，无值）
     *              country         国家，如中国为 CN（setUserInfo(false)时，无值）
     *              iconUrl         用户头像，最后一个数值代表正方形头像大小（有 0、46、64、96、132 数值可选，0 代表 640*640 正方形头像），用户没有头像时该项为空（setUserInfo(false)时，无值）
     *              <p>
     *              QQ授权登录：
     *              accessToken         accessToken
     *              expiration          过期时间（毫秒）
     *              openid              普通用户的标识，对当前开发者账号唯一
     *              unionid             用户统一标识。针对一个QQ开放平台账号下的应用，同一用户的 unionid 是唯一的。（未申请unionID接口调用权限时为空）
     *              nickname            普通用户昵称（setUserInfo(false)时，无值）
     *              iconUrl             用户头像，大小为40×40像素的QQ头像URL。（setUserInfo(false)时，无值）
     *              sex                 用户性别，1 为男性，2 为女性（setUserInfo(false)时，无值）
     *              is_yellow_year_vip  标识是否为年费黄钻用户（0：不是； 1：是）（setUserInfo(false)时，无值）
     *              yellow_vip_level    黄钻等级（setUserInfo(false)时，无值）
     *              <p>
     *              微博授权登录：
     *              accessToken     accessToken
     *              refreshToken    refreshToken
     *              expiration      过期时间（毫秒）
     *              openid          用户UID
     *              nickname        普通用户昵称（setUserInfo(false)时，无值）
     *              sex             普通用户性别，0 为未知，1 为男性，2 为女性（setUserInfo(false)时，无值）
     *              location        用户所在地（setUserInfo(false)时，无值）
     *              iconUrl         用户头像地址（中图），50×50像素（setUserInfo(false)时，无值）
     *              followers_count 粉丝数（setUserInfo(false)时，无值）
     *              friends_count   关注数（setUserInfo(false)时，无值）
     *              <p>
     *              支付宝授权登录：
     *              result      本次操作返回的结果数据
     *              authCode    授权成功的授权码
     *              memo        保留参数，一般无内容
     *              <p>
     *              云闪付授权登录：
     *              authCode    授权成功的授权码
     *              <p>
     *              Facebook授权：
     *              accessToken         accessToken
     *              expiration          过期时间（毫秒）
     *              openid              普通用户的标识，对当前开发者账号唯一
     *              deniedPermissions   未同意授权的权限，使用“,”分割
     *              nickname            普通用户昵称
     *              sex                 普通用户性别，0 为未知，1 为男性，2 为女性
     *              iconUrl             用户头像
     *              email               用户邮箱（未申请授权没有）
     *              <p>
     *              Google授权登录：
     *              accessToken         accessToken
     *              openid              普通用户的标识，对当前开发者账号唯一
     *              nickname            普通用户昵称
     *              iconUrl             用户头像
     *              <p>
     *              Google支付：
     *              purchaseTokens       支付令牌列表json字符串(示例：["gflmcijgeihabojklogfaghn.AO-J1OwQvQqZvL3QwJxZzQm8w6Xqy7y8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f0g1h2i3j4k5l6m7n8o9p0q1r2s3t4u5v6w7x8y9z0"])
     */
    void onComplete(@NonNull MultiMedia media, @NonNull Map<String, String> map);

    /**
     * 取消（主线程）
     *
     * @param media 类型
     */
    void onCancel(@NonNull MultiMedia media);

    /**
     * 失败（主线程）
     * <p>
     * 第三方SDK日志查看：
     * 微信：MicroMsg.SDK
     * 支付宝：APSDK
     * QQ：openSDK_LOG
     * 微博：wbsdk_
     *
     * @param media 类型
     * @param code  错误码：
     *              -8000 未初始化
     *              -8001 APP未安装
     *              -8002 不支持该功能
     *              -8003 参数错误
     *              -8004 启动失败
     *              -8005 未初始化成功
     *              -8006 请求不一致
     *              -8007 请求发起失败
     *              -8008 没有响应数据
     *              -8009 文件保存本地失败
     *              -8010 文件大小超过最大限制
     *              -8011 未授权访问分享的文件的读取权限，请调用setFileProvider设置
     *              -8012 授权访问文件的读取权限失败
     *              -8013 图片压缩文件列表为空
     *              -9000 授权失败
     *              -9001 accessToken获取失败
     *              -9002 accessToken过期
     *              -9003 获取用户信息失败
     *              -9004 回调处理异常
     *              -9005 结果状态错误
     *              -9006 结果数据为空
     *              -9500 分享类型错误
     *              -9800 Google Play 连接失败
     *              -9801 Google Play 未查询到对应商品
     *              -9900 未知错误
     */
    void onFailure(@NonNull MultiMedia media, int code, String msg);
}
